#ifndef CASTITERADOR_H
#define CASTITERADOR_H

#include "Iterador.h"
#include "Puntero.h"

template <class T, class U>
class CastIterador : public Iterador<Puntero<U>>
{
public:
	CastIterador(Puntero<Iterador<Puntero<T>>> toCast);
	~CastIterador();

	void Reiniciar();
	bool HayElemento() const;
	const Puntero<U>& ElementoActual() const;
	void Avanzar();

private:
	Puntero<Iterador<Puntero<T>>> m_ToCast;
	mutable Puntero<U> m_Actual;
};

#include "CastIterador.cpp"

#endif